package com.sky.mapper;

import com.sky.autofill.AutoFill;
import com.sky.dto.SetmealPageQueryDTO;
import com.sky.dto.ShoppingCartDTO;
import com.sky.entity.Dish;
import com.sky.vo.DishVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface DishMapper {

    /**
     * 根据分类id查询菜品数量
     * @param categoryId
     * @return
     */
    @Select("select count(id) from dish where category_id = #{categoryId}")
    Integer countByCategoryId(Long categoryId);

    /**
     * 分页查询菜品
     * @param setmealPageQueryDTO
     * @return
     */
    List<Dish> DishQueryingAll(@Param("setmealPageQueryDTO") SetmealPageQueryDTO setmealPageQueryDTO);

    /**
     * 插入菜品表
     * @param dish
     */
    @AutoFill("INSERT")
    void insertDish(Dish dish);

    /**
     * 根据id查询菜品
     * @param id
     * @return
     */
    DishVO IdQueryingDish(@Param("id") String id);


    /**
     * 修改菜品
     * @param dish
     */
    @AutoFill("UPDATE")
    void modifyTheDishes(@Param("dish")Dish dish);

    /**
     * 菜品起售,停售
     * @param status
     * @param id
     */
    void dishStatus(@Param("status") String status, @Param("id") String id);

    /**
     * 根据分类id查询菜品
     * @param categoryId
     * @return
     */
    List<Dish> IdClassification(String categoryId);

    /**
     * 批量删除菜品
     * @param id
     */
    void deleteInBatches(String id);

    /**
     * 根据id查菜品,菜品口味
     * @param id
     * @return
     */
    DishVO IdQueryingDishMY1(String id);

    /**
     * 返回大于1,不能删除
     * @param dishId
     * @param status
     * @return
     */
    int A1(@Param("dishId") Integer dishId,@Param("status") Integer status);

    /**
     * 返回大于1,不能删除
     * @param dishId
     * @return
     */
    int A2(Integer dishId);

    /**
     * 套餐起售、停售的是否停售状态
     * @param dishId
     * @return
     */
    int findDishStatus(Integer dishId);

    /**
     * 根据分类id查询菜品
     * @param categoryId
     * @return
     */
    List<DishVO> SortFindService(@Param("categoryId")String categoryId,@Param("shopOpen") Integer shopOpen);

    /**
     * 查询菜品(根据小程序添加菜品获取的ID)
     * @param shoppingCartDTO
     * @return
     */
    Dish findDish(@Param("shoppingCartDTO") ShoppingCartDTO shoppingCartDTO);
}
